"""
迭代器：迭代是访问序列中元素的一种方式。也可以理解为一种工具
    依次获取序列中的每一个元素。
        迭代器的工作的过程：
            自动从第一个元素，获取，直到最后。
            只能向后依次获取。

1.可迭代的对象：
    可以直接使用for循环的对象，认为是可迭代的对象。Iterable
        一类数据结构：理解为容器：字符串，列表，元组，字典，集合
        一类是生成器：


2.判断是否可以进行迭代
    导入模块：collections，Iterable


3.迭代器工作：
    迭代器：next()函数来依次获取的数据的对象，迭代器：Iterator
        step1：获取迭代器对象：iter()函数
            iter(可迭代对象)-->迭代器对象it

        step2：依次获取数据：next()
            next(迭代器对象)-->数据，一次获取一个

4.知道迭代器
    总结：
        A：凡是可以使用for循环的遍历的对象，都叫可迭代对象。Iterable
            理解为数据源
        B：凡是可以使用next()依次获取数据对象，都叫迭代器。Iterator
            理解为从数据源获取数据的工具：next()
                step1：iter(可迭代的对象)-->迭代器
                step2：next(迭代器)-->依次获取数据

"""

# 容器 == 可迭代对象  ,iter() --> 迭代器


from collections import Iterable, Iterator

str1 = 'hello world'
i = 15
list1 = [1, 2, 3]

b = isinstance(list1, Iterator)
print(b)
# iter(iterable) -> iterator
it = iter(list1)
b = isinstance(it, Iterator)
print(b)

gen1 = (x for x in range(1, 11) if x % 2 == 1)
print(gen1)
# print(next(gen1))
b = isinstance(gen1, Iterator)
print(b)
print('*' * 20)
# for i in gen1:
#     print(i)

next()
